package com.smarttest.common.beans.protolcol;

import java.util.Date;
import java.util.List;

/**
 * 插入GPS数据使用批量更新队列
 * 
 * @author harry.min(minzaohua@chinawayltd.com)
 *
 */
public interface LctTraceManager {

	/**
	 * 插入gps数据，先入队列，再批量入库
	 * @param gl
	 */
	public abstract void insert(Location gl);
	/**
	 * 插入温度数据，先入队列，再批量入库
	 * @param ctbox
	 */
	public void insertCtbox(CTBox ctbox);
	/**
	 * 插入温度数据，先入队列，再批量入库
	 * @param ctbox
	 */
	public void insertCtbox12(CTBox ctbox);
	/**
	 * 插入温度警报数据，先入队列，再批量入库
	 * @param ctboxAlarm
	 */
	public abstract void insertCtbox12Alarm(CTBox12Alarm ctbox);
	
	/**
	 * 更新最后状态，先入队列，再批量入库
	 * @param imei 设备号
	 * @param status 0/断线，1/在线
	 */
	public abstract void updateStatus(GpsStatus status);

	/**
	 * 指定设备号的最后一次位置
	 * @param imei
	 * @return
	 */
	public abstract Location last(String imei);
	public abstract Location last(String imei, Date time);
	
	/**
	 * 从CACHE里取指定设备号的最后一次位置
	 * @param imei
	 * @return
	 */
	public abstract Location lastByCache(String imei);
	
	/**
	 * 查询设备的当前状态
	 * @param imeis			IMEI号，多个之间用“,”分割
	 * @param speed_ge		最小速度
	 * @param distance_ge	最小距离
	 * @param time_ge		最小更新时间
	 * @param time_le		最大更新时间
	 * @return
	 */
	public abstract List<Location> current(LocationParam lp);
	public abstract LocationLast current(String imei, boolean one);

	/**
	 * 根据时间和设备号分页查询
	 */
	public Page findBy(int cpage, int pageSize, String imei, Date from, Date to);
	public Page findBy(int cpage, int pageSize, String imei, Date from, Date to, String orderBy);
	
	/**
	 * 取指定时段的里程合计
	 * @param imei	设备号
	 * @param from	开始时间，包含
	 * @param to	结束时间，不包含
	 */
	public long sumDistance(String imei, Date from, Date to);
}